import axios from "axios";

// 1.第一种写法
// export function request(config, success, failure) {

//     // 创建axios 实例
//     const $axios = axios.create({
//         baseURL: "http://123.207.32.32:8000",// 基准请求路径
//         timeout: 5000,// 请求超时时间

//     })
//     //发送网络请求
//     $axios(config).then(res => {
//         success(res)
//     }).catch(err => {
//         failure(err)
//     })


// }

// 2.第二种写法
// export function request(config) {
//     // 创建axios 实例
//     const $axios = axios.create({
//         baseURL: "http://123.207.32.32:8000",// 基准请求路径
//         timeout: 5000,// 请求超时时间
//     })
//     //发送网络请求
//     $axios(config.baseConfig).then(res => {
//         config.success(res)
//     }).catch(err => {
//         config.failure(err)
//     })


// }

// 3.第三种写法
// export function request(config) {
//     return new Promise((reslove, reject) => {
//         // 创建axios 实例
//         const $axios = axios.create({
//             baseURL: "http://123.207.32.32:8000",// 基准请求路径
//             timeout: 5000,// 请求超时时间
//         })
//         //发送网络请求
//         $axios(config).then(res => {
//             reslove(res.data)
//         }).catch(err => {
//             reject(err)
//         })

//     })

// }

// 4.第四种写法
export function request(config) {
    // 1.创建axios 实例
    const $axios = axios.create({
        baseURL: "http://152.136.185.210:7878/api/m5",// 基准请求路径
        timeout: 5000,// 请求超时时间
    })
    //2.axios 拦截器
    //2.1请求拦截的作用
    $axios.interceptors.request.use(config => {
        //1.比如config中的一些信息不符合服务器的要求

        //2.比如每次发送网络请求时，都希望在在界面中显示一个请求的图标

        //3.某些网络请求（比如登录），必须携带一些特殊的参数。
        // console.log('请求成功', config);
        return config
    }, err => {
        console.log(err);
    })

    // 2.2响应拦截
    $axios.interceptors.response.use(res => {
        // console.log('响应成功', res);
        return res.data
    }, err => {
        console.log(err);
    })

    //3.发送网络请求
    // $axios实例本身是Promise 直接 return 
    return $axios(config)


}
